package leetcode;

/**
 给你一个长度为n的整数数组，请你判断在 最多 改变1 个元素的情况下，该数组能否变成一个非递减数列。

 我们是这样定义一个非递减数列的：对于数组中所有的i (0 <= i <= n-2)，总满足 nums[i] <= nums[i + 1]。

 来源：力扣（LeetCode）
 链接：https://leetcode-cn.com/problems/non-decreasing-array
 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。

 eg:
 4，2，3
 -1，4，2，3
 2，3，3，2，4
 *
 * @author <a href="mailto:antchenxi@163.com" rel="nofollow">AntChenxi</a>
 * @version v1.0
 */
public class Solution_665 {
    public boolean checkPossibility(int[] nums) {
        if (nums.length < 3) {
            return true;
        }
        int cnt = 0;
        for (int i = 0; i < nums.length - 1; i++) {
            if (nums[i] > nums[i + 1]) {
                cnt++;
                if (i > 0 && nums[i - 1] > nums[i + 1]) {
                    nums[i + 1] = nums[i];
                }
            }
        }
        return cnt < 2;
    }

    public static void main(String[] args) {
        Solution_665 solution = new Solution_665();
        int[] arr1 = new int[]{4,2,3};
        int[] arr2 = new int[]{4,2,1};
        int[] arr3 = new int[]{-1,4,2,3};
        int[] arr4 = new int[]{2,3,3,2,4};
        int[] arr5 = new int[]{2};
        int[] arr6 = new int[]{3,4,2,3};
        int[] arr7 = new int[]{1,2,5,3,3};
        System.out.println(solution.checkPossibility(arr1));
        System.out.println(solution.checkPossibility(arr2));
        System.out.println(solution.checkPossibility(arr3));
        System.out.println(solution.checkPossibility(arr4));
        System.out.println(solution.checkPossibility(arr5));
        System.out.println(solution.checkPossibility(arr6));
        System.out.println(solution.checkPossibility(arr7));
    }
}
